package org.management.page;

import com.github.pagehelper.Page;
import lombok.Data;

import java.io.Serializable;
import java.util.List;


/**
 * @title: Pagination
 * @description: 分页类
 * @author: jiangyan
 * @date:  2019/1/24
 */
@Data
public class Pagination<T> implements Serializable{

	private static final long serialVersionUID = 8656597559014685635L;

	/**
	 * 总记录数
	 */
	private long total;

	/**
	 * 结果集
	 */
	private List<T> rows;

	/**
	 * 第几页
	 */
	private int pageNum;

	/**
	 *  每页记录数
	 */
	private int pageSize;

	/**
	 *  总页数
	 */
	private int pages;

	/**
	 * 排序字段
	 */
	private String order;

	/**
	 * 排列顺序
	 */
	private String sort;

	/**
	 * 包装Page对象，因为直接返回Page对象，在JSON处理以及其他情况下会被当成List来处理，
	 * 而出现一些问题。
	 * @param rows          page结果
     *
	 */
	public Pagination(List<T> rows) {
		if (rows instanceof Page) {
			Page<T> page = (Page<T>) rows;
			this.pageNum = page.getPageNum();
			this.pageSize = page.getPageSize();
			this.total = page.getTotal();
			this.pages = page.getPages();
			this.rows = page;
		}
	}
}
